import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import action.Action;

/*thread che gestisce gli eventi in arrivo*/
public class ThreadServer extends Thread {

	private Socket sclient;							//socket con il client
	private Scanner socketscanner;					//scanner della socket
	private String delimiter = "##";				//i messaggi terminano sempre con questo simbolo
	private String mex;								//messaggio ricevuto dal server, //bisogna usare StringBuilder per i noti motivi di efficienza
	private Parser parser;
	

	
	public ThreadServer(Socket s,Parser parser) throws IOException, AWTException{
		sclient = s;
		socketscanner = new Scanner(sclient.getInputStream());
		socketscanner.useDelimiter(delimiter);
		this.parser = parser;
	}
	
	public void run(){
		//fin tanto che lo stream � aperto, quando mi arriva un messaggio eseguo il corpo del ciclo
		while(socketscanner.hasNext()){
			mex = socketscanner.next();
			Action action;
			action = parser.match(mex);
			action.execute();
		}
		try {
			sclient.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}	
}
